use std::error::Error;
use std::net::SocketAddr;
use tokio::net::lookup_host;
use tracing::{error, info};
use v6_p2p_proxy::{provider, visitor};
use v6_p2p_proxy::app::App;
use v6_p2p_proxy::config::{load_config, Config, ConfigType};

#[tokio::main]
async fn main() {
    App::init();

    match load_config() {
        Ok(config) => {
            info!("{:?}",config);
            match config.config_type {
                ConfigType::Provider => {
                    provider::start(config).await
                }
                ConfigType::Visitor => {
                    visitor::start(config).await
                }
            }
        }
        Err(e) => {
            error!("{e}")
        }
    }
}
